package com.atguigu.gulimall.coupon;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 *
 * 1、如何使用nacos作为配置中心统一管理
 * 	1）引入依赖
 *        <dependency>
 *             <groupId>com.alibaba.cloud</groupId>
 *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 *         </dependency>
 *  2）创建bootstrap.properties,添加配置
 *  spring.application.name=gulimall-coupon
 * 	spring.cloud.nacos.config.server-addr=127.0.0.1:8848
 * 	3）需要给配置中心默认添加一个叫数据集 gulimall-coupon.properties（data Id）默认规则应用名.properties
 * 	4）给数据集添加任何配置
 * 	5）想要动态的获取配置，需要在对应controller上面加注解@RefreshScope动态刷新
 * 	  在用来接收配置属性值的属性上加@Value("${配置相的名}")
 * 	6）如果配置中心和当前的应用配置文件配置了相同的项，那会优先采用配置中心的项。
 * 	  若配置中心没有的则采用应用配置文件当中的。
 * 	2、细节
 *    1）命名空间，环境隔离:
 *    	 1.开发，测试，生产环境，默认是public
 *    		在bootstrap.properties配置spring.cloud.nacos.config.namespace=87e4dce7-7fab-4d6f-bfa0-e4f8c335fef8
 *    	 2.每一个微服务都创建一个自己的命名空间，只加载自己命名空间下的所有配置
 *    2）配置集:所有配置的集合
 *    3）配置集ID:类似配置文件名
 *    	Data ID
 *    4）配置分组:
 *    	默认所有的配置集都属于:DEFAULT_GROUP;
 *    配置中心命名空间使用微服务名命名，使用分组区分环境，dev，test，prod
 *	3、同时加载多个配置集
 *   1）微服务任何配置文件都可以放到配置中心中，
 *   2）只需要在bootstarp.properties说明加载配置中心哪些配置文件即可
 *   3）@Value，@ConfigurationProperties。。。
 *   以前springboot任何方式从配置文件中获取值都能使用。
 *   配置中心有的优先使用配置中心的
 *
 */
@MapperScan("com.atguigu.gulimall.coupon.dao")
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallCouponApplication {

	public static void main(String[] args) {
		SpringApplication.run(GulimallCouponApplication.class, args);
	}

}
